home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Applications / TCPExample / PNL Libraries / Assembly / PreserveA5.p < prev   
Text File  |  1997-07-16  |  1KB  |  74 lines

  1. unit PreserveA5;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Types, Files;
  7.  
  8.     const
  9.         XParamBlockRecExtra = 4;
  10.         
  11.     type
  12.         XParamBlockRec = record
  13.                 completion: UniversalProcPtr;
  14.                 pb: HParamBlockRec;
  15.             end;
  16.         XParmBlkPtr = ^XParamBlockRec;
  17.  
  18.     var
  19.         gPreCompletionProc:UniversalProcPtr;
  20.     
  21.     procedure StartupPreserveA5;
  22.     function SetPreservedA5:Ptr;
  23.     procedure RestoreA5(olda5:Ptr);
  24.  
  25. implementation
  26.  
  27.     uses
  28.         MyCallProc, MyStartup;
  29.         
  30. {$IFC GENERATINGPOWERPC}
  31.  
  32.     procedure SetupPreserveA5;
  33.     begin
  34.     end;
  35.     
  36.     function SetPreservedA5:Ptr;
  37.     begin
  38.         SetPreservedA5:=nil;
  39.     end;
  40.     
  41.     procedure RestoreA5(olda5:Ptr);
  42.     begin
  43. {$unused(olda5)}
  44.     end;
  45.  
  46.     procedure PreCompletion(pbp: ParmBlkPtr);
  47.         var
  48.             prp: XParmBlkPtr;
  49.     begin
  50.         prp := XParmBlkPtr(ord(pbp) - XParamBlockRecExtra);
  51.         CallIOCompletionProc(pbp, prp^.completion);
  52.     end;
  53.     
  54. {$ELSEC}
  55.  
  56.     procedure PreCompletion(pbp: ParmBlkPtr); external;
  57.     procedure SetupPreserveA5; external;
  58.     
  59. {$ENDC}
  60.  
  61.     function InitPreserveA5( var msg: integer ): OSStatus;
  62.     begin
  63. {$unused(msg)}
  64.         gPreCompletionProc := NewIOCompletionProc(@PreCompletion);
  65.         SetupPreserveA5;
  66.         InitPreserveA5 := noErr;
  67.     end;
  68.     
  69.     procedure StartupPreserveA5;
  70.     begin
  71.         SetStartup( InitPreserveA5, nil, 0, nil );
  72.     end;
  73.     
  74. end.